package com.yd.redis_storage_client.jedis;

import org.apache.commons.pool2.impl.GenericObjectPoolConfig;

public class JedisPoolConfig extends GenericObjectPoolConfig {
    public JedisPoolConfig() {
    	// add 
    	setMaxIdle(20); // 控制一个pool最多有多少个状态为idle的jedis实例；
    	setMaxTotal(2000); // 控制一个pool可分配多少个jedis实例，通过pool.getResource()来获取；如果赋值为-1，则表示不限制；如果pool已经分配了maxActive个jedis实例，则此时pool的状态就成exhausted了
    	setMaxWaitMillis(100000); // 表示当borrow一个jedis实例时，最大的等待时间，如果超过等待时间，则直接抛出JedisConnectionException；
    	setTestOnBorrow(true); // 在borrow一个jedis实例时，是否提前进行alidate操作；如果为true，则得到的jedis实例均是可用的；
    	setTestOnReturn(true); // 在return给pool时，是否提前进行validate操作
		// defaults to make your life with connection pool easier :)
		setTestWhileIdle(true); // 如果为true，表示有一个idle object evitor线程对idle object进行扫描，如果validate失败，此object会被从pool中drop掉；这一项只有在timeBetweenEvictionRunsMillis大于0时才有意义；
		setMinEvictableIdleTimeMillis(60000);
		setTimeBetweenEvictionRunsMillis(30000); // 表示idle object evitor两次扫描之间要sleep的毫秒数；
		setNumTestsPerEvictionRun(-1); // 表示idle object evitor每次扫描的最多的对象数；
    }
}
